package com.ruoyi.system.mapper;


import com.ruoyi.system.domain.ArchiveUsagePurpose;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 档案利用目的统计 Mapper 接口
 * 提供数据库操作方法，包括增删改查、批量保存
 *
 * @author 你的名字
 */
@Mapper
public interface ArchiveUsagePurposeMapper {
    /**
     * 查询档案利用目的统计列表（支持名称模糊查询）
     *
     * @param purpose 查询条件封装
     * @return 档案利用目的统计信息列表
     */
    List<ArchiveUsagePurpose> selectArchiveUsagePurposeList(ArchiveUsagePurpose purpose);

    /**
     * 根据主键ID查询档案利用目的统计详情
     *
     * @param id 主键ID
     * @return 档案利用目的统计信息
     */
    ArchiveUsagePurpose selectArchiveUsagePurposeById(Long id);

    /**
     * 新增档案利用目的统计记录
     *
     * @param purpose 要新增的数据
     * @return 影响行数（1 表示成功）
     */
    int insertArchiveUsagePurpose(ArchiveUsagePurpose purpose);

    /**
     * 修改档案利用目的统计记录
     *
     * @param purpose 要修改的数据（需包含ID）
     * @return 影响行数（1 表示成功）
     */
    int updateArchiveUsagePurpose(ArchiveUsagePurpose purpose);

    /**
     * 根据主键ID删除单条档案利用目的统计记录
     *
     * @param id 主键ID
     * @return 影响行数（1 表示成功）
     */
    int deleteArchiveUsagePurposeById(Long id);

    /**
     * 批量删除档案利用目的统计记录
     *
     * @param ids 要删除的主键ID数组
     * @return 影响行数（等于成功删除的记录数）
     */
    int deleteArchiveUsagePurposeByIds(Long[] ids);

    /**
     * 批量插入档案利用目的统计数据（用于批量保存，先删后插场景）
     *
     * @param list 要插入的数据列表
     * @return 影响行数（等于成功插入的记录数）
     */
    int batchInsertArchiveUsagePurpose(@Param("list") List<ArchiveUsagePurpose> list);

    /**
     * 删除所有档案利用目的统计数据（用于批量保存前清空表）
     *
     * @return 影响行数（等于成功删除的记录数）
     */
    int deleteAllArchiveUsagePurpose();
}